﻿/*用户输入一个表格的文本，请按如下格式输出：

1. 用'-'表示横线，'|'表示竖线，'+'表示横竖线的交点
2. 列宽为当前列最长字符串长度 + 2
3. 每列的对齐方式相同，一共有三种，分别为靠左对齐，居中对齐，靠右对齐，分别用'l', 'c', 'r'表示。
a.靠左对齐，字符串左端距离边线1个空格；
b.居中对齐，字符串距离边线左和右空格数的差不超过1，且左边空格数小于等于右边空格数。
c.靠右对齐，字符串右端距离边线1个空格；
输入
第一行是一个整数T(1≤T≤100) ， 表示样例的个数。

每个样例的第1行是两个整数r, c(1≤r, c≤10)，表示表格的行和列数。
第2行是c个字符，字符只由'l', 'c', 'r'三种组成，依次表示对应列的对齐方式。
以后的r行，每行c个字符串，表示对应行列的单元格内容，字符串只含英文字母，数字，长度不超过20个字符。

输出
按格式依次输出每个样例的的结果。*/
#include<stdio.h>
#include<string.h>
int n, m;
char arr[26][26][26];
int len[26][26];//每一个字符串的长度
int max[26];//每一列的最长长度
char sort[26];//打印方式
int p = 0;
int HE = 0;

void PR(int ci_shu)
{
	int j, i;
	for (j = 0; j < m; j++)
	{
		int tmp = max[j] + 2 - len[ci_shu][j];
		if (sort[j] == 'l')
		{
			printf(" %s", arr[ci_shu][j]);
			for (i = 0; i < tmp - 1; i++)
			{
				printf(" ");
			}

		}
		else if (sort[j] == 'c')
		{
			int qian = tmp / 2;
			int hou = tmp - qian;
			for (i = 0; i < qian; i++)
			{
				printf(" ");
			}
			printf("%s", arr[ci_shu][j]);
			for (i = 0; i < hou; i++)
			{
				printf(" ");
			}

		}
		else if (sort[j] == 'r')
		{
			for (i = 0; i < tmp - 1; i++)
			{
				printf(" ");
			}
			printf("%s ", arr[ci_shu][j]);

		}

		printf("|");
	}
}

void PH(int ci_shu)
{
	int i, j, o;
	//开头
	printf("+");
	for (j = 0; j < m; j++)
	{
		for (i = 0; i < max[j] + 2; i++)
		{
			printf("-");
		}
		printf("+");
	}
	printf("\n");
	//中间
	printf("|");
	PR(ci_shu);
	printf("\n");



}




void Max()
{
	int j, i;
	for (j = 0; j < m; j++)
	{
		for (i = 0; i < n; i++)
		{
			max[j] = max[j] > len[i][j] ? max[j] : len[i][j];
		}
	}
}



int main()
{
	int i = 0, j = 0;
	int k;
	scanf("%d", &k);
	while (k--)
	{
		p = 0;
		HE = 0;
		memset(max, 0, sizeof(max));
		scanf("%d%d", &n, &m);
		scanf("%s", sort);
		for (j = 0; j < n; j++)
		{
			for (i = 0; i < m; i++)
			{
				scanf("%s", arr[j][i]);
				len[j][i] = strlen(arr[j][i]);
			}
		}
		Max();
		//打印
		for (j = 0; j < n; j++)
		{
			PH(j);
		}
		//最后一行
		printf("+");
		for (j = 0; j < m; j++)
		{
			for (i = 0; i < max[j] + 2; i++)
			{
				printf("-");
			}
			printf("+");
		}
		printf("\n");

	}

	return 0;
}
